package model;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import model.Material;
import model.MaterialPrenda;

public abstract class Prenda extends Producto {
	private List<MaterialPrenda> materialesPrenda;

	public Prenda(String codigo, String nombre, int cantidadEnStock) {
		super(codigo, nombre, cantidadEnStock);
		materialesPrenda = new ArrayList<MaterialPrenda>();
	}
	
	public List<MaterialPrenda> getMaterialesPrenda() {
		return materialesPrenda;
	}
	
	public void setMaterialesPrenda(List<MaterialPrenda> materialesPrenda) {
		this.materialesPrenda = materialesPrenda;
	}
	
	/**
	 * Se agregan a la prenda los materiales con su respectiva cantidad que la componen.
	 * @param materiales la clave el material y el valor la cantidad utilizada en dicha prenda
	 */
	public void agregarMateriales(Map<Material, Integer> materiales) {
		materialesPrenda.clear();
		for(Map.Entry<Material, Integer> entry: materiales.entrySet()) {
			Material material = entry.getKey();
			int cantidad = entry.getValue();
			this.materialesPrenda.add(new MaterialPrenda(cantidad, material, this));
			//Es responsabilidad de la Prenda crear MaterialesPrenda por eso usamos Map con Material y Cantidad
		}
	}
	
	public void agregarMaterial(Material material, int cantidad) {
		MaterialPrenda materialPrenda = new MaterialPrenda(cantidad, material, this);
		materialesPrenda.add(materialPrenda);
	}
	
	public abstract boolean eliminar();
	
	public String toString(){
		return super.toString();
	}
}
